package main

import "fmt"

func main()  {
	/*几层循环变量名全为 a ,初始化语句中的变量为block级别，同时隐藏外部同名变量,java不可以*/
a:		/*最外层循环仍会进行 continue 单层循环的continue效果就类似与将LOOP定义在循环外,与 java 相同*/
	for a:=0;a<10;a++ {
		fmt.Print("1: ")
		fmt.Println(a)
		for a:=0;a<10;a++ {
			fmt.Print("2: ")
			fmt.Println(a)
			for a:=0;a<10;a++ {
				fmt.Print("3: ")
				fmt.Println(a)
				continue a
			}
		}
	}
fmt.Println("---------------")
b:	/*不可定义重名的LABLE java可以*/
		for a:=0;a<10;a++ {
			fmt.Print("1: ")
			fmt.Println(a)
			for a:=0;a<10;a++ {
				fmt.Print("2: ")
				fmt.Println(a)
				for a:=0;a<10;a++ {
					fmt.Print("3: ")
					fmt.Println(a)
					break b
				}
			}
		}

	fmt.Println("---------------")
	/*最外层循环不会进行 break 单层循环的break效果就类似与将LOOP定义在循环外,同 java*/
	for a:=0;a<10;a++ {
		fmt.Print("1: ")
		fmt.Println(a)
		c:	/*外一层循环*/
		for a:=0;a<10;a++ {
			fmt.Print("2: ")
			fmt.Println(a)
			for a:=0;a<10;a++ {
				fmt.Print("3: ")
				fmt.Println(a)
				break c
			}
		}
	}
	fmt.Println("---------------")
	for a:=0;a<10;a++ {
		fmt.Print("1: ")
		fmt.Println(a)
	d:	/*外两层循环*/
		for a:=0;a<10;a++ {
			fmt.Print("2: ")
			fmt.Println(a)
			for a:=0;a<10;a++ {
				fmt.Print("3: ")
				fmt.Println(a)
				continue d
			}
		}
	}
/*
	fmt.Println("goto---------------")
	for a:=0;a<3;a++ {
		fmt.Print("1: ")
		fmt.Println(a)
	e:	//goto 回到某处继续执行，此处造成死循环，可以添加一个break条件使用
		for a:=0;a<3;a++ {
			fmt.Print("2: ")
			fmt.Println(a)
			for a:=0;a<3;a++ {
				fmt.Print("3: ")
				fmt.Println(a)
				goto e
			}
		}
	}
*/
	fmt.Println("goto---------------")
	for a:=0;a<3;a++ {
		fmt.Print("1: ")
		fmt.Println(a)
		for a:=0;a<3;a++ {
			fmt.Print("2: ")
			fmt.Println(a)
			for a:=0;a<3;a++ {
				fmt.Print("3: ")
				fmt.Println(a)
				goto f
			}
		}
	}
f:	//goto 可以定义到后边继续向下执行


e:	//goto 回到最外层继续执行，此处造成死循环，可以添加一个break条件使用
	fmt.Println("goto---------------")
	for a:=0;a<3;a++ {
		fmt.Print("1: ")
		fmt.Println(a)
		for a:=0;a<3;a++ {
			fmt.Print("2: ")
			fmt.Println(a)
			for a:=0;a<3;a++ {
				fmt.Print("3: ")
				fmt.Println(a)
				goto e
			}
		}
	}
}
